package com.example.chongqingichms.restcontroller;

import com.example.chongqingichms.exception.R;
import com.example.chongqingichms.Utils.SoulPage;
import com.example.chongqingichms.bean.IchBean;
import com.example.chongqingichms.service.IchService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

@RestController
@Slf4j
@RequestMapping(value = "webapi/ich")
public class IchRestController {

    @Autowired
    private IchService ichService;

    /**
     * 表格数据请求
     *
     * @author yelog
     * @date 2019-08-01 17:03
     * @param soulPage 接收表头筛选条件、分页条件
     * @param ichBean 接收定义的查询条件 （注意：没有自定义的表单条件，也建议写上，为了初始化 soulPage.obj ，用于反射获取 类信息）
     * @return java.lang.Object
     */
    @ResponseBody
    @PostMapping("list")
    public Object dataGrid(SoulPage<IchBean> soulPage, IchBean ichBean) {
        soulPage.setObj(ichBean);
        return ichService.dataGrid(soulPage);
    }

    /**
     * 编辑前的数据请求
     * @param id
     * @return
     */
    @GetMapping(value = "{id}")
    public R GetById(@PathVariable Integer id){
        return R.ok("data",ichService.findById(id));
    }

    /**
     * 新增操作
     * @param ichBean
     * @param bindingResult
     * @return
     */
    @PostMapping("add")
    public R Add(@RequestBody IchBean ichBean, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            log.info(bindingResult.getFieldError().getDefaultMessage());
            return R.error(bindingResult.getFieldError().getDefaultMessage());
        }
        ichService.save(ichBean);
        return R.ok("data",ichBean);
    }

    /**
     * 删除操作
     * @param id
     * @return
     */
    @DeleteMapping(value = "delete/{id}")
    public R DeleteById(@PathVariable Integer id){
        ichService.delete(id);
        return R.ok();
    }

    /**
     * 编辑操作
     * @param ichBean
     * @param bindingResult
     * @return
     */
    @PostMapping(value = "edit")
    public R Edit(@RequestBody IchBean ichBean,BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            log.info(bindingResult.getFieldError().getDefaultMessage());
            return R.error(bindingResult.getFieldError().getDefaultMessage());
        }
//        IchBean editIch = ichService.findById(id);
        ichService.save(ichBean);
        return R.ok("data",ichBean);
    }
}
